Space-time coding is used in wireless communications systems that include multiple receive and/or transmit antennae. Space-time codes exploit the spatial diversity of wireless systems by taking advantage of multiple transmission paths between transmitters and receivers. Systems that implement space-time block coding transmit blocks that include a predetermined number of symbols. While space-time block coding may be used to increase a data rate of a system, space-time block codes are commonly used to add redundancy to wireless data transmissions and to increase the power of transmissions. This increases the reliability of wirelessly transmitted data and increases the range of the system.
For example, wireless access systems according to the IEEE 802.16a standard, which is hereby incorporated by reference in its entirety, enable the use of space-time block codes that utilize two transmit antennae. Additionally, there is interest in applying space-time block coding to next-generation wireless local area networks (WLANs).
Referring to FIG. 1, a first wireless communications system 10 includes an outer encoder 12 that is in concatenation with a space-time block encoder 14. For example, the outer encoder 12 may be a trellis coded modulation (TCM) encoder, a bit-interleaved coded modulation (BICM) encoder, or other suitable encoder. An input of the outer encoder 12 receives a user data sequence d={d0, d1, d2, . . . , dk−1} comprising k bits of user data. Some space-time block codes provide diversity gain at the expense of coding gain. Therefore, the outer encoder 12 provides coding gain to further improve system performance. The outer encoder 12 maps the user data sequence d to constellation points of a signal constellation and generates a symbol sequence c={c0, c1, c2, . . . , cm−1}. The outer encoder 12 outputs the symbol sequence c to an input of the space-time block encoder 14. The space-time block encoder 14 generates blocks that include one or more symbols. The blocks are transmitted by first and second transmit antennae 16-1 and 16-2, respectively, during one or more symbol periods.
In one configuration, the space-time block encoder 14 implements a rate-1 orthogonal space-time block code. The rate R=k/p is the ratio of the number of symbols k in a block to the number of symbol periods p that are required to transmit the k symbols. For example, one space-time block encoder encodes two symbols per block according to
            G      2        =          [                                                  x              1                                                          x              2                                                                          -                              x                2                *                                                                        x              1              *                                          ]        ,where x1 and x2 are first and second consecutive symbols, respectively, in the symbol sequence c. The first and second transmit antennae 16-1 and 16-2, respectively, transmit x1 and x2 during two consecutive symbol periods. For example, during a first symbol period, the first transmit antenna 16-1 transmits c0 and the second transmit antenna 16-2 transmits c1. During a second symbol period, the first transmit antenna 16-1 transmits −c1* and the second transmit antenna 16-2 transmits c0*, where c0* and c1* are the complex conjugates of c0 and c1, respectively. The space-time block encoder 14 transmits complex conjugates of the symbols to add redundancy and to allow a receiver to reconstruct a signal in the event that a transmission path experiences noise and fading. Likewise, symbols c2 and C3 are transmitted during two successive symbol periods.
A receive antenna 18 receives a first signal transmission through h11, illustrated at 20-1, and a second signal transmission through h21, illustrated at 20-2, where hij is the channel estimation between transmit antenna i and receive antenna j during a symbol period. During symbol period 2n, where n=0, 1, 2, . . . , S−1, the receive antenna 18 receives symbol r2n, which is expressed as r2n=h11c2n+h21c2n+1+n2n. During symbol period (2n+1), the receive antenna 18 receives symbol r2n+1, which is expressed as r2+1=−h11c2n+1*+h21c2n*+n2n+1. In the equations for r2n and r2n+1, n2n and n2n+1, respectively, denote additive white Gaussian noise. This assumes that 2S symbols are transmitted during 2S symbol periods. Expressed in matrices, the receive antenna 18 receives symbol sequence r during two consecutive symbol periods, where
  r  =            [                                                  r                              2                ⁢                n                                                                                        r                                                2                  ⁢                  n                                +                1                            *                                          ]        =                                        [                                                                                h                    11                                                                                        h                    21                                                                                                                    h                    21                    *                                                                                        -                                          h                      11                      *                                                                                            ]                    ⁡                      [                                                                                c                                          2                      ⁢                      n                                                                                                                                        c                                                                  2                        ⁢                        n                                            +                      1                                                                                            ]                          +                  [                                                                      n                                      2                    ⁢                    n                                                                                                                        n                                                            2                      ⁢                      n                                        +                    1                                    *                                                              ]                    =                        H          ·          c                +                  n          .                    An input of a space-time block decoder 22 receives received symbol sequence r, and the space-time block decoder 22 outputs a user data sequence {circumflex over (d)}={{circumflex over (d)}0, {circumflex over (d)}1, {circumflex over (d)}2, . . . , {circumflex over (d)}k−1} based on r.
Referring now to FIG. 2, in one approach, the space-time block decoder 22 includes a maximum likelihood (ML) branch metric calculation module 24 and a Viterbi decoder 26. The ML branch metric calculation module 24 calculates branch metrics that are based on the received symbol sequence r. The Viterbi decoder 26 determines the most likely transmitted symbol sequence based on the accumulated branch metrics. The space-time block decoder 22 utilizes squared Euclidean distances as ML decision metrics to decode the received symbols. When there is one receive antenna, equivalent and independent decision metrics for c2n and c2n+1 are derived. For example, decision metric |r2n−h11c2n−h21c2n+1|2+|r2n+1+h11c2n+1*−h21c2n*|2 is derived by squaring the additive white Gaussian noise of r2n and r2n+1 and summing the two values. After deleting terms that are independent of the codewords and rearranging the equation, the decision metric for c2n is |(h11*r2n+h21r2n+1*)−c2n|2+(−1+|h11|2+|h21|2)|c2n|2. The Viterbi decoder 26 finds the sequence that is closest in distance to the transmitted sequence by comparing a set of possible transitions in the trellis for the underlying code. Since the decision metrics comprise estimates of noise, the Viterbi decoder 26 identifies a sequence with the minimum accumulated metrics.
When an outer encoder is employed, the ML decision metric is used as a branch metric for the Viterbi decoder 26. However, the independent decision metrics for c2n and c2n+1 require complex computations. For example, the decision metric for c2n includes complex conjugate multiplication and squaring operations. The complex computations complicate the implementation of the space-time block decoder 22.